Localization (L10n) এবং Internationalization (I18n) ওয়েব অ্যাপ্লিকেশন ডেভেলপমেন্টের গুরুত্বপূর্ণ অংশ, বিশেষ করে যদি আপনি বৈশ্বিক বাজারে অ্যাপ্লিকেশনটি চালানোর পরিকল্পনা করেন। Apache Tapestry এ Localization এবং Internationalization সহজে পরিচালনা করার জন্য শক্তিশালী সমর্থন প্রদান করে।
Internationalization (I18n) হলো সেই প্রক্রিয়া যা অ্যাপ্লিকেশনকে বিভিন্ন ভাষা এবং সংস্কৃতির জন্য প্রস্তুত করে। এটি অ্যাপ্লিকেশনের ভাষা, তারিখ, মুদ্রা, এবং অন্যান্য অঞ্চলভিত্তিক কনফিগারেশন পরিবর্তন করার সুবিধা দেয়।
Tapestry তে Internationalization এর জন্য Message Catalog এবং Locale সমর্থন রয়েছে।
Localization (L10n) হলো প্রক্রিয়া যেখানে Internationalization এর ওপর ভিত্তি করে অ্যাপ্লিকেশনটি নির্দিষ্ট অঞ্চলের জন্য কাস্টমাইজ করা হয়। এটি ভাষার অনুবাদ, সংস্কৃতির বৈশিষ্ট্য এবং অন্যান্য স্থানীয় উপাদান সমন্বিত করে অ্যাপ্লিকেশনটি নির্দিষ্ট অঞ্চলের জন্য প্রস্তুত করে।
Tapestry একটি ব্যবহারকারী নির্ধারিত locale বা ভাষার সেটিং গ্রহণ করতে সক্ষম। এটি Locale এর মাধ্যমে অ্যাপ্লিকেশনকে ভাষার উপর ভিত্তি করে কনফিগারেশন পরিচালনা করে। Tapestry স্বয়ংক্রিয়ভাবে কাস্টম locale এবং messages পরিচালনা করার জন্য সমর্থন প্রদান করে।
Locale সেট করা: Tapestry অ্যাপ্লিকেশনের ল্যাঙ্গুয়েজ বা লোকেল পরিবর্তন করতে Locale নির্বাচন করা হয়। আপনি ব্যবহারকারীর ব্রাউজারের লোকেল স্বয়ংক্রিয়ভাবে গ্রহণ করতে পারেন অথবা ম্যানুয়ালি সেট করতে পারেন।
Locale Configurations:
User Locale নির্বাচন করতে: Tapestry ফ্রেমওয়ার্কে @Inject
অ্যানোটেশন ব্যবহার করে আপনি ব্যবহারকারীর locale ইনজেক্ট করতে পারেন।
@Inject
private Locale locale;
Locale নির্বাচন করার উদাহরণ:
@Inject
private Locale locale;
public void onActivate() {
if (locale.getLanguage().equals("en")) {
// Set English locale
} else if (locale.getLanguage().equals("fr")) {
// Set French locale
}
}
@Inject
ব্যবহার: Tapestry আপনাকে Locale নির্ধারণ করতে এবং সে অনুযায়ী UI কনফিগারেশন পরিচালনা করতে সাহায্য করে।Tapestry messages.properties ফাইল ব্যবহার করে বিভিন্ন ভাষার জন্য অনুবাদ (translations) সংরক্ষণ করে। একাধিক ভাষা সমর্থন করতে, আপনাকে শুধু একাধিক properties ফাইল তৈরি করতে হবে এবং সেগুলির মধ্যে উপযুক্ত ভাষার অনুবাদ রাখতে হবে।
Message Catalog Configuration:
messages.properties: এই ফাইলটি ডিফল্ট ভাষার জন্য প্রয়োজনীয় অনুবাদ সংরক্ষণ করবে।
greeting=Hello, Welcome to Tapestry!
messages_fr.properties: যদি আপনি ফরাসি ভাষা সমর্থন করতে চান, তাহলে messages_fr.properties
ফাইলটি তৈরি করুন এবং এখানে ফরাসি অনুবাদ দিন:
greeting=Bonjour, Bienvenue sur Tapestry!
messages_{locale}.properties
ফাইল ব্যবহার করা হয় (যেমন messages_fr.properties
, messages_de.properties
, ইত্যাদি)।Tapestry টেমপ্লেটে messages ব্যবহার করা সহজ। আপনি t:message
ট্যাগ ব্যবহার করে অনুবাদ করা পাঠ্য প্রদর্শন করতে পারেন।
উদাহরণ:
<html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_3.xsd">
<head>
<title>Localization Example</title>
</head>
<body>
<h1><t:message key="greeting" /></h1>
</body>
</html>
এখানে:
<t:message key="greeting" />
ট্যাগটি আপনার messages.properties ফাইল থেকে "greeting" চাবির মানটিকে নির্বাচন করবে এবং সেই অনুযায়ী ভাষার ভিত্তিতে প্রদর্শন করবে।Tapestry অ্যাপ্লিকেশনের মধ্যে Date, Time এবং Currency ফরম্যাট করার জন্য আপনি locale-specific formatting ব্যবহার করতে পারেন। Tapestry আপনাকে স্বয়ংক্রিয়ভাবে বর্তমান ভাষার ভিত্তিতে ফরম্যাটিং প্রদান করে।
Date Formatting উদাহরণ:
@Property
private Date currentDate;
HTML টেমপ্লেট:
<t:date value="currentDate" pattern="dd/MM/yyyy" />
এই উদাহরণে, currentDate ফিল্ডটির মান dd/MM/yyyy ফরম্যাটে দেখাবে।
আপনি যদি ব্যবহারকারীর locale পরিবর্তন করতে চান (যেমন, ইউজার যখন ভাষা পরিবর্তন করবে), আপনি Locale Switcher ফিচার তৈরি করতে পারেন।
package com.example.services;
import org.apache.tapestry5.annotations.Property;
import org.apache.tapestry5.services.Request;
import org.apache.tapestry5.services.Response;
import org.apache.tapestry5.ioc.annotations.Inject;
public class LocaleSwitcher {
@Inject
private Request request;
@Inject
private Response response;
@Property
private String selectedLocale;
public void onActivate(String newLocale) {
if ("fr".equals(newLocale)) {
// Set to French Locale
selectedLocale = "fr";
} else {
// Set to English Locale
selectedLocale = "en";
}
// Redirect back to the same page
response.sendRedirect(request.getPath());
}
}
<t:link t:id="switchToEnglish" page="LocaleSwitcher" context="en">Switch to English</t:link>
<t:link t:id="switchToFrench" page="LocaleSwitcher" context="fr">Switch to French</t:link>
এটি Locale Switcher তৈরি করবে, যেখানে ব্যবহারকারী English বা French ভাষায় পরিবর্তন করতে পারবেন।
Tapestry এ Internationalization (I18n) এবং Localization (L10n) সমর্থন করার জন্য শক্তিশালী ফিচার রয়েছে। আপনি messages.properties ফাইল ব্যবহার করে বিভিন্ন ভাষার জন্য অনুবাদ সংরক্ষণ করতে পারেন, এবং Locale ম্যানেজমেন্ট ব্যবহার করে অ্যাপ্লিকেশনের ভাষা পরিবর্তন করতে পারেন। Tapestry টেমপ্লেটের মধ্যে t:message
ট্যাগ ব্যবহার করে ভাষা-ভিত্তিক কন্টেন্ট প্রদর্শন করা সহজ। এছাড়া, আপনি কাস্টম Locale Switcher তৈরি করে ব্যবহারকারীর ভাষা পরিবর্তন করার সুযোগ প্রদান করতে পারেন।
Tapestry তে I18n এবং L10n ব্যবহারের মাধ্যমে আপনার অ্যাপ্লিকেশনটি আন্তর্জাতিকভাবে ব্যবহারকারীদের জন্য সহজে উপলব্ধ এবং কাস্টমাইজড হতে পারে।
Localization (লোকালাইজেশন) এবং Internationalization (আন্তর্জাতিকীকরণ) ওয়েব অ্যাপ্লিকেশন ডেভেলপমেন্টে গুরুত্বপূর্ণ দিক, বিশেষত যখন আপনি অ্যাপ্লিকেশনটি বিশ্বব্যাপী ব্যবহারকারীদের জন্য তৈরি করতে চান। Apache Tapestry এই দুটি প্রক্রিয়াকে সহজতর করতে সাহায্য করে।
Apache Tapestry আন্তর্জাতিকীকরণ এবং লোকালাইজেশনের জন্য একটি শক্তিশালী সমাধান প্রদান করে, যা সহজে আপনার অ্যাপ্লিকেশনকে একাধিক ভাষা ও সংস্কৃতির জন্য উপযোগী করে তোলে।
Tapestry তে Internationalization (i18n) চালু করতে, আপনাকে প্রথমে অ্যাপ্লিকেশনের জন্য message resources তৈরি করতে হবে। এটি অ্যাপ্লিকেশনটির বিভিন্ন ভাষা এবং সংস্কৃতি সমর্থন করার জন্য প্রয়োজনীয় স্ট্রিং বা বার্তাগুলি সংরক্ষণ করে।
Tapestry তে, আপনাকে এই properties ফাইলগুলো তৈরি করতে হবে এবং সেগুলোকে আপনার অ্যাপ্লিকেশন দ্বারা লোড করতে হবে।
welcomeMessage=Welcome to the Tapestry Application!
loginPrompt=Please log in to continue.
welcomeMessage=Bienvenue dans l'application Tapestry!
loginPrompt=Veuillez vous connecter pour continuer.
welcomeMessage=¡Bienvenido a la aplicación Tapestry!
loginPrompt=Por favor inicie sesión para continuar.
এখন, আপনার অ্যাপ্লিকেশনটি একাধিক ভাষা সমর্থন করবে। Tapestry আপনার ব্যবহারকারীর locale অনুযায়ী সঠিক message.properties ফাইলটি নির্বাচন করবে এবং সেই ভাষার বার্তাগুলি প্রদর্শন করবে।
Tapestry তে Locale নির্বাচনের জন্য আপনি LocaleSwitcher বা অন্য কোন মেকানিজম ব্যবহার করতে পারেন, যা ব্যবহারকারীর পছন্দ অনুযায়ী ভাষা পরিবর্তন করবে। Tapestry তে, Locale
ক্লাস ব্যবহৃত হয়, যা ডিফল্ট বা কাস্টম ভাষা নির্বাচন করতে সাহায্য করে।
package com.example.pages;
import org.apache.tapestry5.annotations.Property;
import org.apache.tapestry5.services.Request;
public class LocaleSwitcher {
@Property
private String language;
private final Request request;
public LocaleSwitcher(Request request) {
this.request = request;
}
// Method to switch locale based on user selection
public void onChangeLanguage() {
if ("fr".equals(language)) {
request.getSession().setAttribute("locale", "fr");
} else if ("es".equals(language)) {
request.getSession().setAttribute("locale", "es");
} else {
request.getSession().setAttribute("locale", "en"); // default to English
}
}
}
<html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_3.xsd">
<head>
<title>Locale Switcher</title>
</head>
<body>
<h1><t:message key="welcomeMessage"/></h1>
<p><t:message key="loginPrompt"/></p>
<form>
<label>Select Language:</label>
<t:select t:id="languageSelect" value="language">
<t:option value="en">English</t:option>
<t:option value="fr">French</t:option>
<t:option value="es">Spanish</t:option>
</t:select>
<t:button t:id="submitButton" value="Change Language"/>
</form>
</body>
</html>
এখানে, ব্যবহারকারী একটি ভাষা নির্বাচন করলে, সেটি LocaleSwitcher ক্লাসের মাধ্যমে সেট হয়ে যাবে এবং পেজে সেই ভাষার বার্তাগুলি দেখানো হবে।
Localization (l10n) এর মাধ্যমে আপনি শুধু ভাষা পরিবর্তনই নয়, বরং অঞ্চলের নির্দিষ্ট বিন্যাস, যেমন তারিখ, সময়, এবং মুদ্রা সম্পর্কিত কনফিগারেশন করতে পারেন। Tapestry স্থানীয়করণের জন্য Locale
ব্যবহার করে, যা message.properties ফাইলগুলো এবং সিস্টেমের অন্য কনফিগারেশনগুলির মাধ্যমে কাস্টমাইজড আউটপুট প্রদান করে।
Tapestry তে, আপনি t:format কম্পোনেন্ট ব্যবহার করে তারিখ এবং সময় স্থানীয়ভাবে ফরম্যাট করতে পারেন।
<t:format value="currentDate" pattern="dd/MM/yyyy"/>
এটি currentDate এর মান dd/MM/yyyy ফরম্যাটে প্রদর্শন করবে।
Internationalization (i18n) এবং Localization (l10n) একটি অ্যাপ্লিকেশনকে আন্তর্জাতিক বাজারে প্রবেশযোগ্য করার জন্য গুরুত্বপূর্ণ। Apache Tapestry আপনার অ্যাপ্লিকেশনকে একাধিক ভাষা এবং সংস্কৃতি সমর্থন করতে সহায়তা করে। Tapestry তে Locale ব্যবহারের মাধ্যমে আপনি ভাষা পরিবর্তন এবং message resources ব্যবহার করে বিভিন্ন ভাষায় বার্তা প্রদর্শন করতে পারেন। Date/Time formatting, Currency formatting, এবং Number formatting এর মতো বৈশিষ্ট্যগুলিও Locale-এর মাধ্যমে কাস্টমাইজ করা যায়, যা আপনার অ্যাপ্লিকেশনকে আরও আন্তর্জাতিক ব্যবহারকারী-বান্ধব করে তোলে।
Apache Tapestry একটি শক্তিশালী web application framework, যা localization (ভাষা স্থানীয়করণ) এবং internationalization (আন্তর্জাতিকীকরণ) সমর্থন করে, যাতে আপনি বিভিন্ন ভাষায় অ্যাপ্লিকেশনটি ব্যবহারযোগ্য করতে পারেন। এই ফিচারটি অ্যাপ্লিকেশনকে বিশ্বের বিভিন্ন অঞ্চলের জন্য উপযোগী করতে সহায়ক, যেখানে একাধিক ভাষা এবং সংস্কৃতি সমর্থিত থাকে।
Tapestry-তে multi-language support প্রদান করতে, আপনাকে দুটি গুরুত্বপূর্ণ দিক বিবেচনায় নিতে হবে:
এই টিউটোরিয়ালে, আমরা দেখব কীভাবে multi-language support তৈরি করা যায়, যেখানে আপনি একাধিক ভাষায় অ্যাপ্লিকেশন প্রদর্শন করতে পারবেন।
Tapestry তে localization এবং internationalization সমর্থন করার জন্য, প্রথমে আপনাকে resource files তৈরি করতে হবে, যেখানে আপনি বিভিন্ন ভাষার জন্য বার্তা এবং টেক্সট কনফিগার করবেন।
Tapestry তে, .properties ফাইল ব্যবহার করে আপনি ভাষার নির্দিষ্ট বার্তা এবং কনটেন্ট কনফিগার করতে পারেন। সাধারণত, messages.properties নামের একটি ফাইল রাখা হয়, যা ডিফল্ট ভাষার বার্তা সংরক্ষণ করে, এবং অন্যান্য ভাষার জন্য আলাদা properties ফাইল রাখা হয়।
welcome.message=Welcome to the Tapestry Application
login.button=Login
welcome.message=Bienvenue dans l'application Tapestry
login.button=Connexion
এখানে:
Tapestry আপনাকে Resource Bundle ব্যবহার করার সুবিধা দেয়, যা ফাইলগুলো থেকে ভাষা নির্ধারণ করে বার্তা লোড করে।
Tapestry-তে ভাষা সেট করার জন্য আপনি locale সেট করতে পারেন এবং সেই অনুযায়ী প্রয়োজনীয় resource bundles ব্যবহার করতে পারেন।
web.xml ফাইলের মধ্যে locale এবং bundle কনফিগার করা যেতে পারে:
<filter>
<filter-name>Locale Filter</filter-name>
<filter-class>org.apache.tapestry5.services.locale.DefaultLocale</filter-class>
<init-param>
<param-name>defaultLocale</param-name>
<param-value>en_US</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>Locale Filter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
এটি en_US (ইংরেজি, মার্কিন যুক্তরাষ্ট্র) ডিফল্ট লোকেল হিসেবে সেট করবে। আপনি যখন অন্য ভাষা ব্যবহার করতে চান, তখন locale পরিবর্তন করতে পারেন, যেমন fr_FR (ফরাসি, ফ্রান্স)।
Tapestry তে একাধিক ভাষা সমর্থন করার জন্য, আপনার resource bundles এবং UI কম্পোনেন্টগুলোকে এমনভাবে কনফিগার করতে হবে যাতে এটি স্বয়ংক্রিয়ভাবে ভাষা পরিবর্তন করতে পারে। এটি করতে, আপনি সাধারণত ব্যবহারকারীর ভাষা নির্বাচন করার জন্য একটি language switcher ব্যবহার করবেন।
একটি সিম্পল language switcher তৈরি করুন যা ব্যবহারকারীদের তাদের পছন্দমতো ভাষা নির্বাচন করতে দেয়।
language-switcher.tml:
<html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_3.xsd">
<head>
<title>Language Switcher</title>
</head>
<body>
<h2><t:message key="welcome.message"/></h2>
<t:select t:id="languageSelect" value="locale" zone="contentZone">
<t:option value="en_US">English</t:option>
<t:option value="fr_FR">Français</t:option>
</t:select>
<h3><t:message key="login.button"/></h3>
</body>
</html>
এখানে:
তবে, ব্যবহারকারীরা যখন ভাষা পরিবর্তন করবেন, তখন পেজ রিফ্রেশ হবে এবং নতুন ভাষার কনটেন্ট দেখানো হবে। এটি সাধারণত zone update বা AJAX এর মাধ্যমে করা যেতে পারে।
UserPage.java (Language Switcher Logic):
package com.example.pages;
import org.apache.tapestry5.annotations.Property;
import org.apache.tapestry5.annotations.Inject;
import org.apache.tapestry5.ioc.annotations.Symbol;
public class UserPage {
@Property
private String locale;
@Inject
@Symbol("defaultLocale")
private String defaultLocale;
// Constructor to initialize default language
public UserPage() {
locale = defaultLocale; // Set default locale on page load
}
// Method to handle language change
public Object onValueChangedFromLanguageSelect(String newLocale) {
locale = newLocale; // Update locale based on user selection
return null; // No page refresh required, use AJAX
}
}
এখানে:
Tapestry-এর message কম্পোনেন্টের মাধ্যমে আপনি রিসোর্স ফাইল থেকে বার্তা রেন্ডার করতে পারেন, যা ভাষা অনুযায়ী স্বয়ংক্রিয়ভাবে পরিবর্তিত হয়।
message.tml:
<html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_3.xsd">
<head>
<title>Localized Content</title>
</head>
<body>
<h2><t:message key="welcome.message"/></h2>
<h3><t:message key="login.button"/></h3>
</body>
</html>
এখানে:
Apache Tapestry তে multi-language support প্রদান করা খুবই সহজ। আপনি resource bundles ব্যবহার করে ভাষার ভিত্তিতে কনটেন্ট এবং বার্তা পরিবর্তন করতে পারেন এবং language switcher ব্যবহার করে ব্যবহারকারীকে বিভিন্ন ভাষা নির্বাচন করার সুযোগ দিতে পারেন। Tapestry তে localization এবং internationalization সমর্থনের মাধ্যমে অ্যাপ্লিকেশনটি বিশ্বের বিভিন্ন ভাষার সাথে সামঞ্জস্যপূর্ণ করা যায়, যা আপনার অ্যাপ্লিকেশনকে আরো বিশ্বজনীন এবং ব্যবহারকারী-বান্ধব করে তোলে।
Apache Tapestry Localization (লোকালাইজেশন) এবং Internationalization (আইন্টারন্যাশনালাইজেশন) এর মাধ্যমে আপনার অ্যাপ্লিকেশনকে একাধিক ভাষায় সমর্থন দেয়ার ব্যবস্থা সহজে করতে পারে। এটি বিশেষভাবে উপকারী যখন আপনার অ্যাপ্লিকেশনটি বিভিন্ন অঞ্চলে ব্যবহারকারীদের জন্য উপলব্ধ হবে এবং বিভিন্ন ভাষায় কনটেন্ট প্রদর্শন করতে হবে।
Tapestry তে Resource Bundles ব্যবহার করে ভাষা পরিবর্তন (language switching) করা যায়, যাতে ব্যবহারকারীরা তাদের পছন্দের ভাষায় অ্যাপ্লিকেশনটি ব্যবহার করতে পারেন।
এই টিউটোরিয়ালে, আমরা দেখব কীভাবে Tapestry তে Resource Bundle ব্যবহার করে ভাষা পরিবর্তন করা যায়।
Resource Bundles হল Java অ্যাপ্লিকেশনগুলির জন্য একটি স্ট্যান্ডার্ড কনফিগারেশন ফাইল যা ভাষা নির্ধারণকারী স্ট্রিং মান এবং লেবেল রাখে। এগুলি সাধারণত .properties ফাইলের মধ্যে থাকে, এবং প্রতিটি ভাষার জন্য আলাদা ফাইল ব্যবহার করা হয়।
উদাহরণ:
প্রথমে আপনাকে একটি Resource Bundle তৈরি করতে হবে যেখানে আপনি আপনার অ্যাপ্লিকেশনের সব ভাষার স্ট্রিং সংরক্ষণ করবেন।
greeting=Welcome
loginMessage=Please log in to continue
greeting=স্বাগতম
loginMessage=কন্টিনিউ করতে লগইন করুন
এই properties ফাইল দুটি Tapestry-এর resource bundle হিসেবে কাজ করবে এবং অ্যাপ্লিকেশন ভাষার উপর ভিত্তি করে স্ট্রিং মান প্রদান করবে।
Tapestry এ ভাষার পরিবর্তন করতে এবং Resource Bundle ব্যবহার করতে আপনাকে @Messages
অ্যানোটেশন ব্যবহার করতে হবে। এই অ্যানোটেশনটি আপনাকে কনফিগারেশন ফাইলের স্ট্রিং মানগুলি অ্যাক্সেস করতে সাহায্য করবে।
package com.example.pages;
import org.apache.tapestry5.annotations.Messages;
import org.apache.tapestry5.annotations.Property;
public class Home {
@Messages
private ResourceBundle messages; // Inject the resource bundle
@Property
private String greetingMessage;
public void setupRender() {
greetingMessage = messages.get("greeting"); // Fetch greeting message from resource bundle
}
}
greeting
কী ব্যবহার করে ইংরেজি বা বাংলা ভাষায় স্ট্রিং মান পাওয়া যাবে।<html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_3.xsd">
<head>
<title>Home</title>
</head>
<body>
<h1><t:property value="greetingMessage" /></h1> <!-- Display greeting message -->
</body>
</html>
এখানে:
<t:property value="greetingMessage" />
: এটি পেজের মধ্যে greetingMessage প্রপার্টি প্রদর্শন করবে, যা Resource Bundle থেকে পাওয়া মান।Tapestry তে ভাষা পরিবর্তন করতে Locale
ব্যবহার করা হয়। আপনার পেজ বা কম্পোনেন্টে ব্যবহারকারী যখন ভাষা পরিবর্তন করবে, তখন এটি সেই ভাষার জন্য নির্ধারিত Resource Bundle ব্যবহার করবে।
package com.example.components;
import org.apache.tapestry5.annotations.Property;
import org.apache.tapestry5.services.ComponentClassTransformWorker;
import org.apache.tapestry5.ioc.annotations.Inject;
import org.apache.tapestry5.ioc.annotations.UsesJavaScript;
public class LanguageSwitcher {
@Inject
private org.apache.tapestry5.services.LocaleChanger localeChanger;
@Property
private String selectedLanguage;
public void onChangeLanguage() {
if ("en".equals(selectedLanguage)) {
localeChanger.changeLocale("en");
} else if ("bn".equals(selectedLanguage)) {
localeChanger.changeLocale("bn");
}
}
}
<html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_3.xsd">
<head>
<title>Language Switcher</title>
</head>
<body>
<form>
<t:select t:id="languageSelect" value="selectedLanguage">
<t:option value="en">English</t:option>
<t:option value="bn">বাংলা</t:option>
</t:select>
<t:button t:id="switchButton" value="Switch Language" />
</form>
</body>
</html>
<t:select>
: ড্রপডাউন মেনু তৈরি করে যাতে ব্যবহারকারী ইংরেজি বা বাংলা ভাষা নির্বাচন করতে পারেন।<t:button>
: একটি বাটন যা ভাষা পরিবর্তন করার জন্য ব্যবহার করা হবে।Tapestry এর LocaleChanger সার্ভিসের মাধ্যমে ব্যবহারকারী যখন একটি ভাষা নির্বাচন করবে, তখন তা স্বয়ংক্রিয়ভাবে সিস্টেমের Locale পরিবর্তন করবে এবং পেজে নতুন ভাষায় কনটেন্ট প্রদর্শিত হবে।
Tapestry-তে Multi-language Support এবং Resource Bundle ব্যবহার করে ভাষা পরিবর্তন একটি শক্তিশালী বৈশিষ্ট্য। আপনি .properties ফাইল ব্যবহার করে একাধিক ভাষার জন্য স্ট্রিং মান সংরক্ষণ করতে পারেন এবং Tapestry এর @Messages অ্যানোটেশন এবং LocaleChanger সার্ভিস ব্যবহার করে ভাষা পরিবর্তন করতে পারেন। এটি আপনার অ্যাপ্লিকেশনকে বিভিন্ন ভাষায় সমর্থন প্রদান করে, যা আন্তর্জাতিকীকরণ (Internationalization) এবং লোকালাইজেশন (Localization) প্রক্রিয়াকে সহজ করে তোলে।
Locale Management একটি গুরুত্বপূর্ণ বৈশিষ্ট্য যখন আপনি একটি মাল্টি-ল্যাংগুয়েজ বা আন্তর্জাতিক ওয়েব অ্যাপ্লিকেশন তৈরি করতে চান। Locale সাধারণত ভাষা এবং অঞ্চল বোঝায়, যেমন ইংরেজি (en) বা বাংলা (bn), যা বিভিন্ন দেশের বা অঞ্চলের ভাষা এবং সংস্কৃতির জন্য উপযুক্ত।
Apache Tapestry তে Locale Management এর মাধ্যমে আপনি অ্যাপ্লিকেশনের বিভিন্ন ভাষার মধ্যে স্যুইচ করতে পারেন এবং ইউজারের নির্বাচিত ভাষায় কনটেন্ট প্রদর্শন করতে পারেন।
এই টিউটোরিয়ালে, আমরা দেখব কিভাবে Tapestry তে পেজ এবং কম্পোনেন্টে Locale ম্যানেজ করা যায়।
Tapestry তে Locale ম্যানেজমেন্টের জন্য আপনাকে প্রথমে messages.properties
ফাইলগুলি তৈরি করতে হবে এবং সেগুলোর মধ্যে ভাষার অনুবাদ এবং কনটেন্ট ম্যানেজ করতে হবে।
ধরা যাক, আপনি ইংরেজি এবং বাংলার জন্য অনুবাদ চাইছেন।
messages.properties
(default locale - English):# messages.properties (English - default locale)
welcome.message=Welcome to our website!
login.button=Login
messages_bn.properties
(Bangla locale):# messages_bn.properties (Bangla locale)
welcome.message=আমাদের ওয়েবসাইটে স্বাগতম!
login.button=লগইন
এখানে:
messages.properties
হল ডিফল্ট ইংরেজি ভাষার ফাইল।messages_bn.properties
হল বাংলা ভাষার জন্য ফাইল।Tapestry তে Locale পরিবর্তন করার জন্য এবং ভাষা অনুযায়ী কনটেন্ট প্রদর্শন করার জন্য @Inject
অ্যানোটেশন এবং @Property
ব্যবহার করা যায়। Tapestry আপনাকে @Persist
অ্যানোটেশনও প্রদান করে, যার মাধ্যমে আপনি ইউজারের নির্বাচিত Locale সেট রাখতে পারবেন।
package com.example.pages;
import org.apache.tapestry5.annotations.Property;
import org.apache.tapestry5.annotations.Persist;
import org.apache.tapestry5.ioc.annotations.Inject;
import org.apache.tapestry5.ioc.services.Messages;
public class UserPreferences {
@Persist
@Property
private String selectedLanguage = "en"; // Default language is English
@Inject
private Messages messages; // Inject the Messages service for localization
// Method to switch language
public void changeLanguage(String languageCode) {
selectedLanguage = languageCode;
}
// Displaying message based on the selected language
public String getWelcomeMessage() {
return messages.get("welcome.message"); // This will automatically pick the language based on locale
}
public String getLoginButtonText() {
return messages.get("login.button"); // This will display Login button text in selected language
}
}
এখানে:
selectedLanguage
প্রপার্টি ইউজারের নির্বাচিত ভাষা রাখে (ডিফল্ট: ইংরেজি)।changeLanguage()
মেথডের মাধ্যমে ইউজার যে ভাষা নির্বাচন করবে, তা selectedLanguage
তে সেট করা হবে।messages.get()
ব্যবহার করা হয়, যাতে প্রতিটি পেজে কনটেন্ট সঠিক ভাষায় প্রদর্শিত হয়।Locale পরিবর্তন করার জন্য, আপনাকে একটি পেজে select
ড্রপডাউন বা button
ব্যবহার করতে হবে, যেখানে ইউজার নির্ধারণ করতে পারবে যে কোন ভাষায় অ্যাপ্লিকেশনটি প্রদর্শিত হবে।
<html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_3.xsd">
<head>
<title>Language Selector</title>
</head>
<body>
<h2>${welcomeMessage}</h2>
<button t:id="loginButton">${loginButtonText}</button>
<form t:id="languageForm">
<select t:id="languageSelector" t:value="selectedLanguage">
<option value="en">English</option>
<option value="bn">বাংলা</option>
</select>
<button type="submit">Change Language</button>
</form>
</body>
</html>
এখানে:
<select>
ড্রপডাউন ব্যবহার করে ইউজার ভাষা নির্বাচন করতে পারে।t:value="selectedLanguage"
এইভাবে selectedLanguage
প্রপার্টি বাংলা বা ইংরেজি সেট করবে।Tapestry আপনাকে LocaleSwitcher ফিচার সরবরাহ করে, যা ইউজারের ব্রাউজার বা সেশন থেকে ভাষা সিলেক্ট করতে সহায়ক। আপনি যদি সার্ভারের সেশন বা ইউজারের ব্রাউজারের ভাষার উপর ভিত্তি করে Locale স্যুইচ করতে চান, তবে আপনাকে এটি LocaleSwitcher মাধ্যমে করতে হবে।
package com.example.services;
import org.apache.tapestry5.services.ApplicationGlobals;
import org.apache.tapestry5.services.Request;
import org.apache.tapestry5.services.Response;
public class LocaleSwitcherService {
private final ApplicationGlobals applicationGlobals;
private final Request request;
private final Response response;
public LocaleSwitcherService(ApplicationGlobals applicationGlobals, Request request, Response response) {
this.applicationGlobals = applicationGlobals;
this.request = request;
this.response = response;
}
// Method to switch locale
public void switchLocale(String language) {
response.setLocale(new java.util.Locale(language));
applicationGlobals.getLocale();
}
}
এখানে, LocaleSwitcherService কাস্টম সার্ভিস দ্বারা locale পরিবর্তন করা হচ্ছে।
Tapestry তে Locale Management এর মাধ্যমে আপনি বিভিন্ন ভাষায় কনটেন্ট প্রদর্শন করতে পারেন এবং ইউজারকে নির্দিষ্ট ভাষায় স্যুইচ করার সুযোগ দিতে পারেন।
messages.properties
ফাইল ব্যবহার করতে হয়।@Persist
এবং Messages সার্ভিস ব্যবহার করা হয়।এভাবে, Tapestry তে আন্তর্জাতিককরণ বা মাল্টি-ল্যাংগুয়েজ সাপোর্ট সরবরাহ করা যায়, যাতে আপনার অ্যাপ্লিকেশনটি একাধিক ভাষায় ব্যবহারযোগ্য হয়ে ওঠে।
Read more